﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Kargo3504.Paneller
{
    public partial class BirimTanimlamaFormu : UserControl
    {
        public BirimTanimlamaFormu()
        {
            InitializeComponent();
        }
        DBBaglantiDataContext db = new DBBaglantiDataContext();
        private void BirimTanimlamaFormu_Load(object sender, EventArgs e)
        {
            btnKaydetTel.Enabled = false;
            txtTelefonNo.Enabled = false;
            txtTelefonAciklama.Enabled = false;
            cbTelAktifMi.Enabled = false;
            listView1.Enabled = false;


            BirimleriGuncelle();
            cmbBirimSec.SelectedIndex = 0;
        }

        private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            if (listBox1.SelectedItems.Count != 0)
            {
                Birimler br = listBox1.SelectedItem as Birimler;
                lblBirimNo.Text = br.BirimID.ToString();
                txtBirimAdi.Text = br.BirimAdi;
                txtEmail.Text = br.Email;
                
                cmbAktifMi.SelectedIndex = br.AktifMi ? 0 : 1;


                cmbAktarmaMerkezi.SelectedIndex = br.Birimler2 == null ? cmbAktarmaMerkezi.Items.Count - 1 : cmbAktarmaMerkezi.Items.IndexOf(br.Birimler2);

                cmbBagliOlduguBirim.SelectedIndex = br.Birimler1 == null ? cmbBagliOlduguBirim.Items.Count - 1 : cmbBagliOlduguBirim.Items.IndexOf(br.Birimler1);
                listView1.Items.Clear();
                txtTelefonNo.Text = "";
                txtTelefonAciklama.Text = "";
                cbTelAktifMi.Checked = false;
                var telefonlar = (from x in db.BirimTelefonlaris where x.BirimID == br.BirimID select x).ToList();

                foreach (var item in telefonlar)
                {
                    ListViewItem li = new ListViewItem(new string[] { item.TelefonNo, item.TelefonAciklama, item.TelefonAktifMi.ToString() });
                    li.Tag = item.BirimTelefonID;
                    listView1.Items.Add(li);
                }

                if (br.AktarmaMerkezID == null && br.BolgeID == null)
                {
                    cmbBirimSec.SelectedIndex = 1;
                }
                else if (br.AktarmaMerkezID == null && br.BolgeID != null)
                {
                    cmbBirimSec.SelectedIndex = 2;
                }

                else if (br.AktarmaMerkezID != null && br.BolgeID != null)
                {
                    cmbBirimSec.SelectedIndex = 0;
                }
            }
        }

        private void cmbBirimSec_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbBirimSec.Text == "Şube")
            {
                cmbAktarmaMerkezi.Enabled = true;
                cmbBagliOlduguBirim.Enabled = true;
            }
            else if (cmbBirimSec.Text == "Bölge")
            {
                cmbAktarmaMerkezi.Enabled = false;
                cmbAktarmaMerkezi.SelectedIndex = cmbAktarmaMerkezi.Items.Count - 1;
                cmbBagliOlduguBirim.Enabled = false;
                cmbBagliOlduguBirim.SelectedIndex = cmbBagliOlduguBirim.Items.Count - 1;
            }
            else if (cmbBirimSec.Text == "Aktarma")
            {
                cmbAktarmaMerkezi.Enabled = false;
                cmbAktarmaMerkezi.SelectedIndex = cmbAktarmaMerkezi.Items.Count - 1;
                cmbBagliOlduguBirim.Enabled = true;
            }
        }

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {

                txtTelefonNo.Text = listView1.SelectedItems[0].Text;
                txtTelefonAciklama.Text = listView1.SelectedItems[0].SubItems[1].Text;
                cbTelAktifMi.Checked = Convert.ToBoolean(listView1.SelectedItems[0].SubItems[2].Text);
            }
        }

        private void ListViewSagTik_Opening(object sender, CancelEventArgs e)
        {
            if (listView1.SelectedItems.Count == 0 || listView1.SelectedItems[0].SubItems[2].Text == "False")
            {
                listViewSagTikSil.Visible = false;
                listViewSagTikYeni.Visible = true;
            }
            else
            {
                listViewSagTikSil.Visible = true;
                listViewSagTikYeni.Visible = false;
            }

        }

        private void listViewSagTikYeni_Click(object sender, EventArgs e)
        {
            txtTelefonNo.Tag = null;
            txtTelefonNo.Text = "";
            txtTelefonAciklama.Text = "";
            cbTelAktifMi.Checked = false;
        }

        private void listViewSagTikSil_Click(object sender, EventArgs e)
        {
            var sorgu = (from x in db.BirimTelefonlaris where x.BirimTelefonID == Convert.ToInt32(listView1.SelectedItems[0].Tag) select x).FirstOrDefault();
            if (sorgu != null)
            {
                sorgu.TelefonAktifMi = false;
                db.SubmitChanges();
                listView1.SelectedItems[0].SubItems[2].Text = "False";
            }
        }

        private void btnKaydetTel_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0 || listView1.SelectedItems[0].Tag == null) //Yeni Telefon Girişi
            {
                BirimTelefonlari tel = new BirimTelefonlari();
                tel.TelefonNo = txtTelefonNo.Text;
                tel.TelefonAciklama = txtTelefonAciklama.Text;
                tel.TelefonAktifMi = cbTelAktifMi.Checked;
                tel.BirimID = Convert.ToInt32(lblBirimNo.Text);
                db.BirimTelefonlaris.InsertOnSubmit(tel);
                db.SubmitChanges();
                ListViewItem li = new ListViewItem(new string[] { txtTelefonNo.Text, txtTelefonAciklama.Text, cbTelAktifMi.Checked.ToString() });
                li.Tag = tel.BirimTelefonID;
                listView1.Items.Add(li);
            }
            else //Güncelleme
            {
                var sorgu = (from x in db.BirimTelefonlaris where x.BirimTelefonID == Convert.ToInt32(listView1.SelectedItems[0].Tag) select x).FirstOrDefault();
                if (sorgu != null)
                {
                    sorgu.TelefonNo = txtTelefonNo.Text;
                    sorgu.TelefonAciklama = txtTelefonAciklama.Text;
                    sorgu.TelefonAktifMi = cbTelAktifMi.Checked;
                    db.SubmitChanges();
                    listView1.SelectedItems[0].SubItems[0].Text = txtTelefonNo.Text;
                    listView1.SelectedItems[0].SubItems[1].Text = txtTelefonAciklama.Text;
                    listView1.SelectedItems[0].SubItems[2].Text = cbTelAktifMi.Checked.ToString();
                }
            }
        }

        private void btnKaydet_Click(object sender, EventArgs e)
        {
            bool Yeni = false;
            Birimler br;
            if (lblBirimNo.Text == "-")
            {
                Yeni = true;
                br = new Birimler();
            }
            else
            {
                br = (from x in db.Birimlers where x.BirimID == Convert.ToInt32(lblBirimNo.Text) select x).SingleOrDefault();
            }
            if (br == null)
            {
                MessageBox.Show("Herhangi Bir Kayıt Bulunamadı!");
                return;
            }
            br.AktarmaMerkezID = null;
            br.BolgeID = null;
            if (cmbBirimSec.Text == "Şube")
            {
                br.Birimler2 = (cmbAktarmaMerkezi.SelectedItem as Birimler);
                br.Birimler1 = (cmbBagliOlduguBirim.SelectedItem as Birimler);
            }
            else if (cmbBirimSec.Text == "Bölge")
            {
                br.AktarmaMerkezID = null;
                br.BolgeID = null;

            }
            else if (cmbBirimSec.Text == "Aktarma")
            {
                br.AktarmaMerkezID = null;
                br.Birimler1 = (cmbBagliOlduguBirim.SelectedItem as Birimler);
            }

            br.AktifMi = cmbAktifMi.Text == "Evet" ? true : false;
            br.BirimAdi = txtBirimAdi.Text;
            br.Email = txtEmail.Text;
            if (Yeni == true)
            {
                db.Birimlers.InsertOnSubmit(br);
            }

            db.SubmitChanges();

            lblBirimNo.Text = br.BirimID.ToString();

            BirimleriGuncelle();

        }

        private void BirimleriGuncelle()
        {
            var sorgu = (from x in db.Birimlers select x).ToList();
            listBox1.DataSource = sorgu;
            var aktarmamerkezleri = sorgu.FindAll(f => f.AktarmaMerkezID == null && f.BolgeID != null);
            aktarmamerkezleri.Add(new Birimler() { BirimAdi = "Yok", BirimID = -1 });
            cmbAktarmaMerkezi.DataSource = aktarmamerkezleri;
            var bolgeler = sorgu.FindAll(f => f.AktarmaMerkezID == null && f.BolgeID == null);
            bolgeler.Add(new Birimler() { BirimAdi = "Yok", BirimID = -1 });
            cmbBagliOlduguBirim.DataSource = bolgeler;
        }

        private void btnYeni_Click(object sender, EventArgs e)
        {
            txtBirimAdi.Text = "";
            txtEmail.Text = "";
            cmbAktarmaMerkezi.SelectedIndex = cmbAktarmaMerkezi.Items.Count - 1;
            cmbBagliOlduguBirim.SelectedIndex = cmbBagliOlduguBirim.Items.Count - 1;
            cmbAktifMi.SelectedIndex = cmbAktifMi.Items.Count - 1;
            lblBirimNo.Text = "-";

            listView1.Items.Clear();
            txtTelefonAciklama.Text = "";
            txtTelefonNo.Text = "";
            cbTelAktifMi.Checked = false;


        }

        private void btnSil_Click(object sender, EventArgs e)
        {

            try
            {


                var Birim = (from x in db.Birimlers where x.BirimID == Convert.ToInt32(lblBirimNo.Text) select x).SingleOrDefault();


                db.Birimlers.DeleteOnSubmit(Birim);
                db.SubmitChanges();
                BirimleriGuncelle();
                MessageBox.Show("İlgili Birim Başarılı Bir Şekilde Silindi");
            }
            catch (Exception)
            {

                MessageBox.Show("İşlem Sırasında Bir Hata Oluştu Lütfen Tekrar Deneyin");
            }

        }

        private void lblBirimNo_TextChanged(object sender, EventArgs e)
        {
            if (lblBirimNo.Text == "-")
            {
                btnKaydetTel.Enabled = false;
                txtTelefonNo.Enabled = false;
                txtTelefonAciklama.Enabled = false;
                cbTelAktifMi.Enabled = false;
                listView1.Enabled = false;


            }
            else
            {
                btnKaydetTel.Enabled = true;
                txtTelefonNo.Enabled = true;
                txtTelefonAciklama.Enabled = true;
                cbTelAktifMi.Enabled = true;
                listView1.Enabled = true;
            }
        }

    }
}
